home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / SourceCode / Palettes / HotShape / HotShapeInspector.m < prev    next >
Text File  |  1995-06-12  |  3KB  |  96 lines

  1. // HotShapeInspector.m
  2. // By Charles G. Fleming, Educational Computing Services, Allegheny College.
  3. // Copyright 1992 Allegheny College
  4. // You may freely copy, distribute and reuse this code. 
  5. // Allegheny College and the author disclaim any warranty of any kind, 
  6. // expressed or implied, as to its fitness for any particular use.
  7. // This work was partially supported by a grant from the Vira Heinz Endowment.
  8.  
  9. #import "HotShapeInspector.h"
  10. #import "HotShape.h"
  11.  
  12. #define PATHS "ellipse rectangle diamond star triangle octagon"
  13.  
  14. @implementation HotShapeInspector
  15.  
  16. - init
  17. {
  18.     NXBundle *bundle;
  19.     char path[MAXPATHLEN+1];
  20.     char *start, *token;
  21.         
  22.     [super init];
  23.  
  24.     // Load the inspector's nib file.
  25.     bundle = [NXBundle bundleForClass:[self class]];
  26.     [bundle getPath:path forResource:"HotShapeInspector" ofType:"nib"];
  27.     [NXApp loadNibFile:path owner:self withNames:NO fromZone:[self zone]];
  28.  
  29.     start = PATHS;
  30.     token = strtok(start, "\n\t ");
  31.     while(token)
  32.     {
  33.         [[pathNamePopUpListButton target] addItem:token];
  34.         token = strtok(NULL, "\n\t ");
  35.     }
  36.  
  37.     // Set the target and action for the popup list.
  38.     pathNamePopUpList = [pathNamePopUpListButton target];
  39.     [pathNamePopUpList setTarget:self];
  40.     [pathNamePopUpList setAction:@selector(ok:)];    
  41.     return self;
  42. }
  43.  
  44. - setPathNamePopUpListButton:anObject
  45. {
  46.     pathNamePopUpListButton = anObject;
  47.     
  48.     // Set the target and action for the popup list.
  49.     pathNamePopUpList = [pathNamePopUpListButton target];
  50.     [pathNamePopUpList setTarget:self];
  51.     [pathNamePopUpList setAction:@selector(ok:)];    
  52.     
  53.     [[pathNamePopUpList itemList] selectCellAt:0 :0];
  54.     return self;
  55. }
  56.  
  57. // Get the names of the hot paths from the file HotPath.pws and add them 
  58. // to the popup list.  Get the control's tag as well.
  59. - revert:sender
  60. {    
  61.     // Display on the popup list button the hot path name.
  62.     [pathNamePopUpListButton setTitle:[object hotPathName]];
  63.  
  64.     // Display the control's tag.
  65.     controlTag = [object tag];
  66.     [tagTextField setIntValue:controlTag];    
  67.     
  68.     // Display the visibility state.
  69.     [visibilitySwitch setState:[object visible]];            
  70.     return [super revert:sender];
  71. }
  72.  
  73. - ok:sender
  74. {
  75.     const char *shapeName;
  76.     
  77.     // Set the control's tag.
  78.     controlTag = [tagTextField intValue];
  79.     [object setTag:controlTag];
  80.  
  81.     // Set the control's pathname.
  82.     shapeName = [[[pathNamePopUpList itemList] selectedCell] title];
  83.     [object setHotPathName:shapeName];
  84.     
  85.     // Set the control's visibility.
  86.     [object setVisible:[visibilitySwitch state]];
  87.     
  88.     [object display];    
  89.     return [super ok:sender];
  90. }
  91.  
  92. - (BOOL)wantsButtons
  93. {
  94.     return NO;
  95. }    
  96. @end